/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package efe.bean;

import java.io.Serializable;

/**
 * Wartość całkowita z możliwością ustawienia ograniczenia.
 * @author root
 */
public class EfeNumberValue implements EfeValue, Serializable {

    private int number = 0;

    /**
     * Ustawia wartość jako liczbę całkowitą, bez walidacji.
     * @param number limit
     */
    public void setNumber(int number) {
        this.number = number;
    }

    /**
     * Pobiera wartość jako liczbę całkowitą.
     * @return limit
     */
    public long getNumber() {
        return number;
    }
    
    private int limit;

    /**
     * Get the value of limit
     *
     * @return the value of limit
     */
    public int getLimit() {
        return limit;
    }

    /**
     * Set the value of limit
     *
     * @param limit new value of limit
     */
    public void setLimit(int limit) {
        this.limit = limit;
    }


    public boolean validate(String value) {
        //0 - 2147483648
        if (!value.matches("[0-9]{1,10}")) return false;
        int temp = Integer.parseInt(value);
        if (temp < 0 || temp > limit) return false;
        number = temp;
        return true;
    }

    public String display() {
        return String.valueOf(number);
    }

    public String getMessage() {
        return "Podana wartość musi być liczbą całkowitą od 0 do " + limit + "!";

    }

    /**
     * Zwraca wartość. Metoda utworzona dla spójności.
     * @return wartość
     */
    public int getValue() {
        return number;
    }


}
